package chapter02

/**
  * scala 数据类型
  *
  */
object Test07_DataType {

  def main(args: Array[String]): Unit = {

    var num1: Float = 2.2345678910f
    var num2: Double = 2.2345678910
    println(num1)
    println(num2)

    // 制表
    var c3: Char = '\t'
    // 换行
    var c4: Char = '\n'
    // 回车
    var c5: Char = '\r'
    println(c3)
    println(c4)
    println(c5)
    // 字符变量底层保存ASCII码
    var c6 = '9'
    var i1: Int = c6
    println(i1)

    println(m1())


    val str = "12.5"
    //在scala中，不是将小数点后的数据进行截取，而是会抛出异常
    //println(str.toInt) 报错
    println(str.toDouble)
    println(str.toDouble.toInt)

  }

  /**
    * Null类只有一个实例对象，null，类似于Java中的null引用。null可以赋值给任意引用类型(AnyRef)，但是不能赋值给值类型(AnyVal：比如 Int, Float, Char, Boolean, Long, Double, Byte, Short)
    * Unit类型用来标识过程，也就是没有明确返回值的函数。由此可见，Unit类似于Java里的void。Unit只有一个实例，()，这个实例也没有实质的意义
    * Nothing，可以作为没有正常返回值的方法的返回类型，非常直观的告诉你这个方法不会正常返回，而且由于Nothing是其他任意类型的子类，他还能跟要求返回值的方法兼容。
    *
    * 比如开发中，我们有一个方法，就会异常中断，这时就可以返回Nothing
    * 即当我们Nothing 做返回值，就是明确说明该方法有没有正常返回值
    *
    * @return Nothing
    */
  def sayHello: Nothing = {
    throw new Exception("抛出异常")
  }

  // 空类型
  def m1(): Unit = {
    println("m1 is running")
  }

  // 在main方法执行之前执行
  println(m1())
  println(null)


}
